import { onMounted, ref } from 'vue'
import { useIntersectionObserver, useIntervalFn } from '@vueuse/core'

export function useLazyData(fn: () => void) {
    const target = ref(null)
    // 数据懒加载
    onMounted(() => {
        // isIntersecting : 布尔值, 为 true表示能看到元素了
        const { stop } = useIntersectionObserver(target.value, ([{ isIntersecting }]) => {
            // 当可以看到时,发送ajax
            if (isIntersecting) {
                // 获取新鲜好物数据
                fn()
                //停止监听
                stop()
            }
        })
    })
    return target
}
/**
 * 
 * @param count 
 * @returns 多少秒开始倒计时, 开始函数 { time, start }
 */
// 定时器函数
export function useCountDown(count: number = 10) {
    // 倒计时初始值
    const time = ref(0)
    // 工具函数 const { pause: 暂停, resume: 开始 } = useIntervalFn( fn , 间隔时长, {immediate: 是否立即执行})
    const { pause, resume } = useIntervalFn(() => {
        if (time.value <= 0) {
            // 清除定时器
            pause()
        } else {
            time.value--
        }
    },
        1000,
        {
            immediate: false
        })
    const start = () => {
        time.value = count
        resume()
    }
    return { time, start }
}